package com.zjj.jvm.classloader;

import com.sun.crypto.provider.DESKeyFactory;
import sun.misc.Launcher;

import java.util.Arrays;

/**
 * @author zhanglei.zjj
 * @description 验证各种类加载器所加载的路径
 * @date 2023/3/2 21:59
 */
public class TestJDKClassLoader {
    public static void main(String[] args) {
        // jdk核心类String
        System.out.println("String类的类加载器是：" + String.class.getClassLoader());

        // jre/lib/ext类
        System.out.println("DESKeyFactory类的类加载器是：" + DESKeyFactory.class.getClassLoader().getClass().getName());

        // 开发人员 应用程序类
        System.out.println("TestJDKClassLoader类的类加载器是：" + TestJDKClassLoader.class.getClassLoader().getClass().getName());

        // appClassLoader 父类加载器
        System.out.println("TestJDKClassLoader类的类加载器的父类加载器是：" + TestJDKClassLoader.class.getClassLoader().getParent().getClass().getName());

        // extClassLoader 父类加载器
        System.out.println("DESKeyFactory类的类加载器的父类加载器是：" + DESKeyFactory.class.getClassLoader().getParent());

        System.out.println("===========================================================================================");

        // bootstrapClassLoader加载的路径
        System.out.println("bootstrapClassLoader 加载的路径：" + Arrays.toString(Launcher.getBootstrapClassPath().getURLs()));

        // extClassLoader加载的路径
        System.out.println("extClassLoader 加载的路径：" + System.getProperty("java.ext.dirs"));

        // appClassLoader加载的路径
        System.out.println("appClassLoader 加载的路径：" + System.getProperty("java.class.path"));
    }
}
